package com.bnz.pojo;

import com.sun.corba.se.impl.orbutil.CacheTable;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

@Data
public class Cart {

	private Map<Integer,CartItem> map = new HashMap<>();

	//添加到购物车中
	public void addCart(Product product) {
		//判断map中是否有此商品，如果有，就修改数量
		boolean b = map.containsKey(product.getPid());
		if(b){
			//得到购物项
			CartItem cartItem = map.get(product.getPid());
			//修改购买数量
			cartItem.setNum(cartItem.getNum() + 1);
			//修改个人购买价格
			cartItem.setTotal(cartItem.getNum() * product.getPrice());

		}else{//如果没有就直接添加到map中
			CartItem item = new CartItem(1,product.getPrice(),product);
			map.put(product.getPid(),item);
		}
		//修改库存
		product.setQuantity(product.getQuantity() - 1);
	}

	//从购物车中移除商品
	public void removeCart(Integer pid) {
		//恢复库存
		CartItem item = map.get(pid);
		item.getProduct().setQuantity(item.getProduct().getQuantity() + item.getNum());
		//根据key来移除商品
		map.remove(pid);

	}

	//清空购物车
	public void clearCart() {
		//恢复库存
		for (CartItem item : map.values()) {
			//得到购物项关联的商品对象
			Product product = item.getProduct();
			//修改商品的库存量
			product.setQuantity(product.getQuantity() + item.getNum());
		}
		//清空map
		map.clear();
	}
}
